ClickHouce 常用数据类型转换函数 |
您所在的位置:网站首页 › sql 转换数据类型 › ClickHouce 常用数据类型转换函数 |
目录 1、toInt(8|16|32|64) 2、toFloat(|32|64) 3、toDecimal(32|64|128) 4、toString 5、parseDateTimeBestEffort 6、CAST(x, T) 1、toInt(8|16|32|64)说明:转换一个输入值为Int类型。 这个函数包括: toInt8(expr) — 结果为Int8数据类型。 toInt16(expr) — 结果为Int16数据类型。 toInt32(expr) — 结果为Int32数据类型。 toInt64(expr) — 结果为Int64数据类型。 参数 :expr — 表达式返回一个数字或者代表数值类型的字符串。 不支持二进制、八进制、十六进制的数字形式,有效数字之前的0也会被忽略。 返回值:整形在Int8, Int16, Int32,或者 Int64 的数据类型。 函数使用rounding towards zero原则,这意味着会截断丢弃小数部分的数值。 注:NaN and Inf转换是不确定的。 例子: select toInt64(nan), toInt64(Inf),toInt32(32), toInt16('16'), toInt8(8.8);扩展: ☛ toInt(8|16|32|64)OrZero :需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回0。 ☛ toInt(8|16|32|64)OrNull :需要一个字符类型的入参,然后尝试把它转为Int (8 | 16 | 32 | 64),如果转换失败直接返回NULL。 2、toFloat(|32|64) 说明:转换一个输入值为Float类型。 这个函数包括: toFloat32(expr) — 结果为Float32数据类型。 toFloat64(expr) — 结果为Float64数据类型。 例子: select toFloat32('89.12'),toFloat64('98.0912');扩展: ☛ toFloat(32|64)OrZero :需要一个字符类型的入参,然后尝试把它转为Float (32 | 64),如果转换失败直接返回0。 ☛ toFloat(32|64)OrNull :需要一个字符类型的入参,然后尝试把它转为Float ( 32 | 64),如果转换失败直接返回NULL。
3、toDecimal(32|64|128) 说明:转换 value 到Decimal类型的值,其中精度为S。value可以是一个数字或者一个字符串。S 指定小数位的精度。 这个函数包括: toDecimal32(value, S) toDecimal64(value, S) toDecimal128(value, S) 例子: select toDecimal32('89.12',2),toDecimal64('98.0912',5),toDecimal128('98.0912',6);扩展: ☛ toDecimal(32|64|128)OrNull:转换一个输入的字符到 Nullable(Decimal(P,S))类型的数据。 如果在解析输入值发生错误的时候你希望得到一个NULL值而不是抛出异常,可以使用该函数。 ☛ toDecimal(32|64|128)OrZero:转换输入值为Decimal(P,S)类型数据。 当解析错误的时候,你不需要抛出异常而希望得到0值,可以使用该函数。
4、toString 说明:函数用于在数字、字符串(不包含FixedString)、Date以及DateTime之间互相转换。 select now(),toString(today()),toString(now());5、parseDateTimeBestEffort 说明:把String类型的时间日期转换为DateTime数据类型。 语法: parseDateTimeBestEffort(time_string [, time_zone]); 参数 : time_string — 字符类型的时间和日期。 time_zone — 字符类型的时区。 非标准格式的支持 ☛ 9位或者10位的数字时间,unix timestamp. ☛ 时间和日期组成的字符串: YYYYMMDDhhmmss, DD/MM/YYYY hh:mm:ss, DD-MM-YY hh:mm, YYYY-MM-DD hh:mm:ss等。 ☛ 日期的字符串: YYYY, YYYYMM, YYYY*MM, DD/MM/YYYY, DD-MM-YY 等。 ☛ 只有天和时间: DD, DD hh, DD hh:mm。这种情况下 YYYY-MM 默认为 2000-01。 ☛ 包含时间日期以及时区信息: YYYY-MM-DD hh:mm:ss ±h:mm等。例如: 2021-12-12 17:36:00 -5:00。 返回值:DateTime类型数据。 例子: select parseDateTimeBestEffort('12 20:19') as data_0 ,parseDateTimeBestEffort('8912211011') as data_1 ,parseDateTimeBestEffort('12/13/2021 12:12:21') as data_2 ,parseDateTimeBestEffort('20211212 11:12:12') as data_3 ,parseDateTimeBestEffort('Sat, 12 Aug 2021 11:22:22 GMT', 'Europe/Moscow') as data_4扩展: ☛ parseDateTimeBestEffortOrNull 函数和parseDateTimeBestEffort基本一致,除了无法解析返回结果为NULL。 ☛ parseDateTimeBestEffortOrZero 函数和parseDateTimeBestEffort基本一致,除了无法解析返回结果为0。 6、CAST(x, T) 说明:将’x’转换为’t’数据类型。还支持语法CAST(x as t) 例子: select '2021-12-21 21:12:13' as timestamp ,CAST(timestamp as DateTime) as datetime ,CAST(timestamp as Date) as date ,CAST(timestamp, 'String') as string ,CAST(timestamp, 'FixedString(22)') as fixed_string;注:将参数转换为FixedString(N),仅适用于String或FixedString(N)类型的参数。
参考:https://clickhouse.tech/docs/en/sql-reference/functions/type-conversion-functions/ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |